A checkpoint is a collection of data on a computing device-readable medium, such as a hard disk drive, which contains an image of a running process on a computing system for the time when the checkpoint was created. By restoring a checkpoint the process is restarted and set into the state at the time that the checkpoint was created. The behavior of the process that was restored from a checkpoint is equivalent to the original process just after creating the checkpoint.
There are checkpoint and restore solutions for interpretive languages, such as Verilog and VHDL. For example, the hardware simulation environments of Cadence and Mentor Graphics support checkpoint/restore of simulation for the Verilog and VHDL interpretive languages. However, there are currently only limited checkpoint & restore solutions available for compiled languages (e.g., C/C++ programs, SystemC, etc.). For example, GNU Emacs create a checkpoint during its build procedure to shorten the setup time of the GNU Emacs. When GNU Emacs is started it is actually restored from that checkpoint. The checkpoint, however, does not contain the state of the stack of the process. In addition, GNU Emacs checkpoint/restore procedure does not support multi-threading or inter-process connectivity.
Other compiled language checkpoint/restore libraries do not support restoring connectivity to debuggers or other external applications. The compiled language solutions also do not fully support operating-system dependent resources like multi-threading, mutexes, shared memory and/or the like.